/*
 * Jogador.h
 *
 *  Created on: 24/11/2011
 *      Author: Arthur Holanda
 */

#ifndef JOGADOR_H_
#define JOGADOR_H_

#include<FBase.h>

#include "Mao.h"
#include "controller/Controlador.h"
#include "model/Inteligencia.h"
#include "model/Acao.h"

using namespace Osp::Base;

enum StatusJogador{JOGANDO, DESISTIU};

class Controlador;
class Inteligencia;

class Jogador {
public:
	Jogador();
	virtual ~Jogador();
	void Construct(String nome, int dinheiro);

	void IniciarPartida();
	void IniciarRodada();
	void TerminarRodada();
	bool PodeApostar(int valor);
	void Apostar(int valor);
	void ApostarTudo();
	void PuxarCarta();
	void AumentarApostaEm(int valor);
	void AumentarApostaPara(int valor);
	void Cobrir();
	void Desistir();
	void Passar();
	Acao* Jogar();
	void Receber(int valor);
	void TerminouJogada();

	Mao* GetMao();
	String GetNome();
	int GetDinheiro();
	int GetApostaRodada();
	int GetApostaTotal();
	int GetId();
	StatusJogador GetStatus();
	Controlador* GetControlador();
	void SetControlador(Controlador* controlador);
	void SetInteligencia(Inteligencia* inteligencia);
	Inteligencia* GetInteligencia();
	String ToString();
	Acao* ultimaAcao;

protected:
	int id;
	String nome;
	int dinheiro;
	int apostaRodada;
	int apostaTotal;
	Mao* mao;
	StatusJogador status;

	Inteligencia* inteligencia;
	Controlador* controlador;
private:
    void CriaInteligencia();
};


#endif /* JOGADOR_H_ */
